package control;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import modelo.Usuario;
import persistencia.PersistenciaBD;

@WebServlet(urlPatterns = {"/loguear"})
public class LoginServlet extends HttpServlet {

    //Se recogen el username y el password
    //Se comprueba si existe el usuario en la BD:
    //  - Si existe, se crea una sesion, se verifica si es admin o no, y se comprueba si estaba comprando 
    //      o logueando simplemente, para redirigirlo a la direccion correspondiente
    //  - Si no existe, se informa al usuario de ello.
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        
        String user = request.getParameter("username");
        String pass = request.getParameter("password");
        
        try
        {       
            PersistenciaBD persistencia = PersistenciaBD.getInstance();
            Usuario userC = persistencia.getClient(user, pass);
            if(userC != null)
            {
                HttpSession session = request.getSession(true);
                session.setAttribute("userName", user);
                session.setMaxInactiveInterval(30*60);
                if (userC.getPermiso() != 0)
                {

                    session.setAttribute("userPermis", "admin"); 
                }
                else
                {
                    session.setAttribute("userPermis", "user");
                }
                if (session.getAttribute("comprar")!=null && (boolean)session.getAttribute("comprar")){
                    session.removeAttribute("comprar");
                    request.getRequestDispatcher("/cargarConciertos?tipo=comprar").forward(request, response); 
                }
                else
                    request.getRequestDispatcher("/index.jsp").forward(request, response); 
            }
            else
            {
                request.setAttribute("mensaje", "Login incorrecto");
                request.getRequestDispatcher("login.jsp").forward(request, response);
            }
        } 
        catch (ServletException | IOException e)
        {
            request.setAttribute("mensaje", "Fallo logueando al usuario");
            request.getRequestDispatcher("login.jsp").forward(request, response);
        }  
    }
  
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }
  
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    @Override
    public String getServletInfo() {
        return "Servlet para loguear usuarios";
    }
}